GetSmallestSize subroutine
'
'
' ***** GetSmallestSize *****
'
SUB GetSmallestSize
XuiSendMessage (grid, #GetBorder, 0, 0, 0, 0, XuiDialog2B, @bw)
XuiSendMessage (grid, #GetSmallestSize, 0, 0, @labelWidth, @labelHeight, $Label, 8)
XuiSendMessage (grid, #GetSmallestSize, 0, 0, @textWidth, @textHeight, $TextLine,
8)
'
FOR i = $Button0 TO $Button1
XuiSendMessage (grid, #GetSmallestSize, 0, 0, @width, @height, i, 8)
IF (width > buttonWidth) THEN buttonWidth = width
IF (height > buttonHeight) THEN buttonHeight = height
NEXT i
'
width = buttonWidth + buttonWidth
IF (width < labelWidth) THEN width = labelWidth
v2 = width + bw + bw
v3 = labelHeight + textHeight + buttonHeight + bw + bw
END SUB
A GetSmallestSize subroutine is needed in any resizable grid. Grid functions
generated by GuiDesigner are not resizable - they are initially set up to return the fixed
design size when they receive a #GetSmallestSize message.
The GetSmallestSize and Resize subroutines in this function are a good model, since most
grid functions employ the similar methods.
GetSmallestSize first sends a #GetBorder message to itself get its own border width.
Next it sends #GetSmallestSize messages to its kids - the XuiLabel at the top, the
XuiTextLine below it, and the two XuiPushButtons at the bottom. It sets the smaller
of the buttons equal the larger, sets the overall width v2 to the largest width plus twice
the border width, and sets the overall height v3 to the sum of the label height, text
height, button height, and twice the border width.